package com.whale.kernel.model.tree;

import java.io.Serializable;

import com.whale.kernel.domain.HtmlMenu;
import com.whale.kernel.service.hibernate.transformer.ScalarEntity;

public class HtmlMenuNode extends ScalarEntity<HtmlMenu> implements
		Serializable, Nodal<HtmlMenuNode> {

	/**
	 * 
	 */
	private static final long serialVersionUID = -167018265759290759L;

	/**
	 * Относительный номер загруженного уровня
	 */
	private final Integer localNodeLevel;

	public HtmlMenuNode(HtmlMenu entity, Integer localNodeLevel) {
		super(entity);
		this.localNodeLevel = localNodeLevel;
	}

	public Long getId() {
		return entity.getId();
	}

	public Long getParentId() {
		return entity.getParentMenu() == null ? null : entity.getParentMenu()
				.getId();
	}

	public String getNodeKey() {
		return "n" + entity.getId().toString();
	}

	public String getNodeName() {
		return entity.getName();
	}

	/**
	 * Переводит уникальный ключ узла в идентификатор узла
	 */
	public static Long nodeKeytoId(String nodeKey) {
		return Long.valueOf(nodeKey.substring(1));
	}

	public Integer getLocalNodeLevel() {
		return localNodeLevel;
	}

	@Override
	public String toString() {
		return "HtmlMenuNode [localNodeLevel=" + localNodeLevel + ", entity="
				+ entity + "]";
	}

	public int compareTo(HtmlMenuNode o) {
		return entity.getMenuOrder().compareTo(o.getEntity().getMenuOrder());
	}

	public boolean requireSorting() {
		return true;
	}

}
